package server

import (
	"fmt"
	"github.com/gorilla/websocket"
	_ "github.com/robfig/cron"
	"net"
	"net/http"
	"os"
	"time"
)

var upgrader = websocket.Upgrader{
	CheckOrigin: func(r *http.Request) bool {
		return true // 放行所有的来源，实际项目中应根据需求做更严格的检查
	},
}

func StartTCPServer() {
	listener, err := net.Listen("tcp", ":30027")
	if err != nil {
		fmt.Println("监听失败:", err)
		os.Exit(1)
	}
	defer listener.Close()

	// 启动定时更新主机资源和金融数据的 Goroutine
	go func() {
		for {
			UpdateHostData()
			UpdateMetalData()
			time.Sleep(10 * time.Second)
		}
	}()

	fmt.Println("服务启动，监听端口 30027...")

	// 接受并处理客户端连接
	for {
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println("连接接受失败:", err)
			continue
		}
		go handleConnection(conn)
	}
}

func StartWebSocketServer() {
	// 监听 HTTP 请求，WebSocket 协议是基于 HTTP 协议建立的
	http.HandleFunc("/ws", handleWebSocket)

	// 启动定时更新主机资源和金融数据的 Goroutine
	go func() {
		for {
			UpdateHostData()
			UpdateMetalData()
			time.Sleep(1 * time.Second)
		}
	}()

	// 启动 WebSocket 服务器
	fmt.Println("服务启动，监听端口 30027...")

	err := http.ListenAndServe(":30027", nil)
	if err != nil {
		fmt.Println("服务器启动失败:", err)
		os.Exit(1)
	}
}
